package com.yourenbang.lingyun.transaction.web.service.pay.withdraw.channel;


import com.yourenbang.lingyun.constants.enums.pay.PayFromEnum;
import com.yourenbang.lingyun.core.message.Result;
import com.yourenbang.lingyun.transaction.web.domain.dto.pay.hjtx.HjtxAgentpayDTO;
import com.yourenbang.lingyun.transaction.web.domain.dto.pay.hjtx.HjtxAgentpayQueryDTO;
import com.yourenbang.lingyun.transaction.web.domain.po.FundAccountWithdrawPayment;
import com.yourenbang.lingyun.transaction.web.domain.vo.pay.hjtx.AgentpayVO;

import java.math.BigDecimal;
import java.util.Map;

/**
 * 汇积天下
 */
public interface HjtxService {

    /**
     * 代付
     */
    AgentpayVO agentpay(HjtxAgentpayDTO dto);

    /**
     * 代付查询
     */
    void agentpayQuery(HjtxAgentpayQueryDTO dto);

    /**
     * 回调
     */
    FundAccountWithdrawPayment notice(Map<String, String> param);

    /**
     * 汇积天下签约回调
     */
    void withdrawSigneHjtx(String param);

    /**
     * 是否签约
     */
    Boolean alreadySign(String userBaseId);

    /**
     * 获取签约地址
     */
    String fullSingUrl(PayFromEnum payFrom, String userBaseId);

    /**
     * 代付V2
     */
    AgentpayVO agentpayV2(HjtxAgentpayDTO dto);

    /**
     * 代付查询V2
     */
    void agentpayQueryV2(HjtxAgentpayQueryDTO dto);

    /**
     * 提现回调V2
     */
    FundAccountWithdrawPayment noticeV2(Map<String, String> param);

    /**
     * 查询是否符合发佣要求
     */
    Result checkQualified(HjtxAgentpayDTO dto);

    /**
     * 获取签约地址V2
     */
    String fullSingUrlV2(PayFromEnum payFrom, String userBaseId);

    /**
     * 查询用户签约
     */
    Result checkUserSignInfo(PayFromEnum payFrom, String userBaseId);

    /**
     * 汇积天下签约回调
     */
    void withdrawSigneHjtxV2(String param);

    /**
     * 查询余额
     */
    BigDecimal getBalance();

}
